package controllers;

import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import lib.UtilsInput;
import models.Reporte9;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import play.db.DB;
import play.mvc.Controller;

public class Reporte_9 extends Controller{
	
	public static void Reporte_9() {
		if(Security.isAuthenticated() && Security.havePermission())
			render();
		else
			Application.login();
	}
	
	public static void getReporte9(String mes,String anio,String npro){
		String query = "select PRO_SERVICIO,CLI_NOMBRES,PRO_MONTO from SIGPC_PROYECTO sigpro join SIGPC_CLIENTE sigcli on sigpro.CLI_ID = sigcli.CLI_ID WHERE extract(year from PRO_FECHA_INI) = 2013 order by PRO_MONTO desc ";
		String str = null;
		Gson gson = new Gson();
    	Connection conn = DB.getConnection();
    	
    	//Lista de objetos 
    	List<Reporte9> listReporte9 = new ArrayList<Reporte9>();
    	System.out.println(mes);
    	
    	try {
    		if (mes != null &&  anio != null && npro != null)
    		{   			
    			if (mes.equalsIgnoreCase("0") &&  !anio.equalsIgnoreCase("0") && npro.equalsIgnoreCase("0"))
        			query = "select PRO_SERVICIO,CLI_NOMBRES,PRO_MONTO from SIGPC_PROYECTO sigpro join SIGPC_CLIENTE sigcli on sigpro.CLI_ID = sigcli.CLI_ID WHERE extract(year from pro_fecha_ini) = "+ anio +"order by PRO_MONTO desc ";
    	
    			if (!mes.equalsIgnoreCase("0") &&  !anio.equalsIgnoreCase("0") && npro.equalsIgnoreCase("0"))
        			query = "select PRO_SERVICIO,CLI_NOMBRES,PRO_MONTO from SIGPC_PROYECTO sigpro join SIGPC_CLIENTE sigcli on sigpro.CLI_ID = sigcli.CLI_ID WHERE extract(month from PRO_FECHA_INI) =" + mes + " and extract(year from pro_fecha_ini) = "+ anio +"order by PRO_MONTO desc ";
    			
    			if (!mes.equalsIgnoreCase("0") &&  !anio.equalsIgnoreCase("0") && !npro.equalsIgnoreCase("0"))
    			query = "select PRO_SERVICIO,CLI_NOMBRES,PRO_MONTO from SIGPC_PROYECTO sigpro join SIGPC_CLIENTE sigcli on sigpro.CLI_ID = sigcli.CLI_ID WHERE extract(month from PRO_FECHA_INI) =" + mes + " and extract(year from pro_fecha_ini) = "+ anio +" AND rownum <= "+ npro +"order by PRO_MONTO desc ";
    		}	
    			
    		
        	ResultSet rs = conn.createStatement().executeQuery(query);
        	
        	 while (rs.next()) {
        		 Reporte9 reporte9 = new Reporte9(rs.getString("CLI_NOMBRES"),rs.getString("PRO_SERVICIO"),rs.getFloat("PRO_MONTO"));
        		 listReporte9.add(reporte9);
        		 
        	        	
        	 }
    		
        	 str = "{\"success\":true ,\"records\":" + listReporte9.size()
     				+ ", \"total\":1 , \"page\":1, \"rows\":" + gson.toJson(listReporte9)
     				+ "}";

     		renderJSON(str);
     		
        	        	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


	//JASPER REPORT XLS
	public static void  download_report(String mes, String anio, String nproyectos, String formato) {
		Map reportParams = new HashMap();
	    
		if (formato != null)
		{
			reportParams.put("mes", mes);
			reportParams.put("anio",  anio);
			reportParams.put("npro",  nproyectos);
		  		  
			if (formato.equalsIgnoreCase("html"))
				renderHtml( UtilsInput.toString((ByteArrayInputStream) lib.BaseJasperReport.generateReport("reporte_9", reportParams,formato)));
			else
				renderBinary(lib.BaseJasperReport.generateReport("reporte_9", reportParams,formato), "reporte_9."+ formato);
		}

	}

}
